package pro.bbs.view.web.base;

import com.yy.kit.collections.YYMapKits;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.servlet.ModelAndView;

import java.util.Map;

/**
 * <p>
 * 所有的controller均需要继承此类，包含一些公共方法
 * </p>
 *
 * @author 杨阳
 * @since 2017年9月1日
 */
@Api(value = "基础controller", description = "所有controller都要继承此类，定义了一些跳转方法")
public class BbsCommonController {

    /**
     * <p>
     * 统一通过ModelAndView方法进行跳转，所有controller中跳转都需要通过此方法
     * </p>
     *
     * @param viewName 视图名称
     * @param params   转递到二第个页面的参数
     * @return {@link ModelAndView}
     */
    @ApiOperation(value = "统一跳转页面方法")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "viewName", value = "跳转页面的名字", required = true),
            @ApiImplicitParam(name = "params", value = "跳转页面后携带的参数,如果没有参数可以传null", required = true)
    })
    protected ModelAndView goToPageByModelAndView(String viewName, Map<String, Object> params) {
        ModelAndView view = new ModelAndView();
        if (YYMapKits.isEmpty(params)) {
            params = YYMapKits.createHashMap();
        }
        view.addAllObjects(params);
        view.setViewName(viewName);
        return view;
    }

    /**
     * <p>
     * 调用远程接口，失败后，默认的回调方法
     * </p>
     *
     * @return {@link Map<String, Object>}
     * @author 杨阳
     * @since 2017年11月3日
     */
    public Map<String, Object> defaultFallbackMethod() {
        Map<String, Object> result = YYMapKits.createHashMap();
        result.put("success", Boolean.FALSE);
        result.put("msg", "远程服务异常，请重试!");
        return result;
    }
}
